package com.imooc.service;

import com.imooc.pojo.Items;
import com.imooc.pojo.ItemsImg;
import com.imooc.pojo.ItemsParam;
import com.imooc.pojo.ItemsSpec;
import com.imooc.pojo.vo.CommentLevelCountsVO;
import com.imooc.pojo.vo.ShopCartVO;
import com.imooc.utils.PagedGridResult;

import java.util.List;

public interface ItemService {

    /**
     * 根据商品id查询详情
     * @param itemId 商品id
     * @return 详情
     */
    public Items queryItemById(String itemId);

    /**
     * 根据商品id查询商品图片列表
     * @param itemId 商品id
     * @return 图片
     */
    public List<ItemsImg> queryItemImgList(String itemId);

    /**
     * 根据商品id查询商品规格列表
     * @param itemId 商品id
     * @return 规格
     */
    public List<ItemsSpec> queryItemSpecImgList(String itemId);

    /**
     * 根据商品id查询商品属性
     * @param itemId 商品id
     * @return 属性
     */
    public ItemsParam queryItemParam(String itemId);

    /**
     * 根据商品id查询商品的评价等级数量
     * @param itemId 商品id
     */
    public CommentLevelCountsVO queryCommentCounts(String itemId);

    /**
     * 根据商品id查询商品的评价(分页)
     * @param itemId 商品id
     * @param level 评价等级
     * @return 评价列表
     */
    public PagedGridResult queryPagedComments(String itemId, Integer level, Integer page, Integer pageSize);

    /**
     * 搜索商品列表
     * @param keywords 关键字
     * @param sort 排序
     * @return 商品列表
     */
    public PagedGridResult searchItems(String keywords, String sort, Integer page, Integer pageSize);

    /**
     * 查询三级分类下的商品
     * @param cateId 三级分类id
     * @param sort 排序
     * @return 商品列表
     */
    public PagedGridResult searchItemsByThirdCat(Integer cateId, String sort, Integer page, Integer pageSize);

    /**
     * 根据规格ids查询最新的购物车中商品数据(用于刷新渲染购物车中的商品数据)
     * @param specIds ids
     * @return 购物车商品数据
     */
    public List<ShopCartVO> queryItemsBySpecIds(String specIds);

    /**
     * 根据商品规格id获取详细信息
     * @param specId 规格id
     * @return 商品详情
     */
    public ItemsSpec queryItemSpecById(String specId);

    /**
     * 根据商品id获取商品图片
     * @param itemId 商品id
     * @return 商品图片url
     */
    public String queryItemMainImgById(String itemId);

    /**
     * 减少库存
     * @param specId 规格id
     * @param buyCounts 数量
     */
    public void decreaseItemSpecStock(String specId, int buyCounts);

}
